package com.scau402.system1.repository;

import com.scau402.system1.domain.bo.WmsJadeBO;
import com.scau402.system1.domain.bo.WmsJadeTypeBO;
import com.scau402.system1.domain.dto.CalWarehouseNumAndValueDTO;
import com.scau402.system1.domain.dto.WarehouseStorage;
import com.scau402.system1.domain.po.WmsCheckboundJadeDetailPO;
import com.scau402.system1.domain.po.WmsJadePO;
import com.scau402.system1.domain.query.InboundJadeQuery;

import java.util.List;
import java.util.Map;

/**
 * @author
 * @create 2024/1/3 15:55
 * @description
 */
public interface IWmsJadeRepository {
    Map<String, List<WmsJadeBO>> findByInboundOrderCodeList(List<String> inboundOrderCodeList, Long tenantId);

    List<WmsJadeBO> getByCondition(InboundJadeQuery query, boolean page);

    Map<Long, WmsJadeTypeBO> getJadeTypeBOMap();

    List<WmsJadeBO> findByIds(List<Long> jadeIdList, Long tenantId);

    CalWarehouseNumAndValueDTO countNumAndPrice(Long warehouseId, Long storageId);

    List<WmsCheckboundJadeDetailPO> selectJadeDetailListByWarehouseId(Long warehouseId);

    List<WmsCheckboundJadeDetailPO> selectRelatedJadeDetail(Long warehouseId, List<Long> relatedStorageIds);

    Long selectOneImageIdByBarcode(String jadeBarcode);

    List<WmsJadePO> findJadeByIds(List<Long> jadeIdList);

    void updateVisibleByJadeId(Long jadeId, String jadeVisible);

    void updateStatusByJadeId(Long jadeId, String jadeStatus);

    WmsJadePO findQuantityByJadeId(Long jadeId);

    CalWarehouseNumAndValueDTO countNumAndPrice2(List<WarehouseStorage> targetList);

    List<WmsCheckboundJadeDetailPO> selectJadeDetailListByWarehouseStorage(List<WarehouseStorage> warehouseStorage);
}
